package cn.imokay.stopthread;

import lombok.var;

import java.util.ArrayList;

public class RightWayInterrupted {
    public static void main(String[] args) {
        var ints = new ArrayList<Object>(Integer.MAX_VALUE);

        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                while (true) {}
            }
        };

        Thread thread = new Thread(runnable);
        thread.start();
        thread.interrupt();

        System.out.println(thread.isInterrupted());
        System.out.println(thread.interrupted());
        System.out.println(Thread.interrupted());
        System.out.println(thread.isInterrupted());
        /**
         * 预期打印顺序：
         * true:毋庸置疑，新线程被interrupt，所以线程对象的isInterrupted成员方法肯定会返回准确的中断状态
         * true：猜测，新线程对象调用改静态方法，会返回新线程的最新中断状态即true，并且该方法会清除中断状态
         * false：Thread类名调用静态方法，应该是获取主线程的中断状态，位false，该方法会清楚中断状态
         * false：猜测因为第二的线程对象执行的静态方法，中断会被清楚，所以此处调用对象的成员方法判断结果位false
         */

        /**
         * 实际打印：
         * true
         * flase：该方法是Threa的静态方法，运行在main方法中，返回的是主线程的状态
         * false：同上
         * true：子线程没有清清除过状态，因此还是中断状态
         */

    }
}
